package Exception;

/**
 * 对多异常的处理
 * 1.声明异常时,建议声明更为具体的异常,这样处理的更为具体.
 * 2.对方声明几个异常,就对应有几个catch块,不要定义多余的catch块,
 *   如果有多个catch块中的异常出现继承关系,父类异常catch块放在最下面.
 *
 * 建议在进行catch处理时,catch中一定要定义具体处理方式.
 * 不要简单定义一句e.printStackTrace();
 * 也不要间的就书写一句输出语句
 */
class Demo02 {

    int div(int a, int b) throws  ArithmeticException,ArrayIndexOutOfBoundsException{
        int [] arr = new int[a];
        System.out.println(arr[4]);
        return a / b;
    }
}

class ExceptionDemo02 {
    public static void main(String[] args) {
        Demo02 d = new Demo02();
        try {
            int x = d.div(4, 0);
            System.out.println("x= " + x);
        } catch (ArithmeticException e) {
            System.out.println("除零啦");
            System.out.println(e.toString());
            e.printStackTrace();
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e.toString());
            System.out.println("角标越界啦");
        } catch (Exception e) {
            System.out.println("haha: "+e.toString());
        }

        System.out.println("over");
    }
}